Dplyr

Quantitative Methodology (UPF)

Jordi Mas Elias

https://www.jordimas.cat/

Sumari

  • Pipe
  • Funcions dplyr de fila
  • Funcions dplyr de columna
  • Transformar variables

Warm up

Corba d’aprenentatge

RStudio workflow

Carregar paquets

library(dplyr)
library(ggplot2)
library(stringr)

Pipe

Pipe

Una funció

f(d$v)
f(d, v)
d |> f(v)
1:100 |> 
   sample(4)

Vàries funcions

f1(f1(d, v1), v2)
d |> 
  f1(v1) |> 
  f2(v2)

Pipe

Sense pipe

go_to_upf(take_transport(get_dressed(get_out_of_bed(wake_up(me,
time = "8:30"), side = "left"), pants = TRUE, shirt = TRUE), 
bus = TRUE, metro = FALSE), mqi = FALSE, bar = TRUE)

Amb pipe

me |> 
  wake_up(time = "8:30") |> 
  get_out_of_bed(side = "left") |> 
  get_dressed(pants = TRUE, shirt = TRUE) |> 
  take_transport(bus = TRUE, metro = FALSE) |> 
  go_to_upf(mqi = FALSE, bar = TRUE)

Exemple inspirat de here i here.

Funcions dplyr de fila

Filter

Redueix el nombre de files en base a un criteri determinat

df |> 
  filter(logic_vector)
  • És sempre el resultat d’un vector lògic.
  • Es pot usar & (AND), | (OR), ! (NOR).

Arrange

  • Ordena de menys a més…
df |> 
  arrange(vector)
  • …o de més a menys.
df |> 
  arrange(desc(vector))

Count

  • Fa un recompte del nombre de categories d’un vector1
df |> 
  count(vector)
  • …i ordena els resultats.
df |> 
  count(vector, sort = T)

Funcions dplyr de columna

Select

  • Selecciona vectors.
df |> 
  select(vector1, vector4, vector6:vector9)
  • Elimina vectors.
df |> 
  select(-vector2)

Rename

Reanomena el nom del vector.

df |> 
  rename(new_name = Old.Vector.Name)

Mutate

  • Modifica els valors d’un vector1
df |> 
  mutate(vector5 = vector5 * 100)
  • … o bé crea un nou vector2.
df |> 
  mutate(new_vector = vector5 + vector6)
  • Es poden combinar vàries operacions.
df |> 
  mutate(vector5 = vector5 * 100,
         new_vector = vector5 + vector6)

Summarize

  • Resumeix les dades.
df |> 
  summarize(name = sum(vector))
  • Varis elements poden ser resumits:
df |> 
  summarize(name1 = sum(vector),
            name2 = mean(vector),
            n = n())

*Compte amb l’argument na.rm = T.

Group_by

  • Sempre s’ha de combinar amb una altra funció (e.g. summarize, filter, mutate), agrupa les dades segons els valors d’un o més vectors1
df |> 
  group_by(vector) |> 
  summarize(name1 = sum(vector))

*Quan combinem group_by i summarize, estem canviant la unitat d’observació del marc de dades.